package com.alameda.common.base.enums;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * 用户类型
 *
 * @author Lv
 * @date 2025/1/1
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
public enum UserTypeEnum {
    /**
     * 0 移动端用户
     */
    APP("0", "移动端用户"),

    /**
     * 1 管理端用户
     */
    ADMIN("1", "管理端用户"),

    ;

    /**
     * 用户类型标识
     */
    private String typeCode;

    /**
     * 用户类型描述
     */
    private String typeDesc;

    /**
     * 获取map键
     *
     * @return
     */
    public static String getKeyString() {
        return "userType";
    }

    /**
     * 通过用户类型编码获取类型枚举
     *
     * @param userTypeCode 用户类型编码
     * @return
     */
    public static UserTypeEnum getByTypeCode(String userTypeCode) {
        UserTypeEnum typeEnum = null;
        UserTypeEnum[] userTypeEnums = UserTypeEnum.values();
        for (UserTypeEnum userTypeEnum : userTypeEnums) {
            if (userTypeEnum.typeCode.equals(userTypeCode)) {
                typeEnum = userTypeEnum;
                break;
            }
        }

        return typeEnum;
    }

    /**
     * 转换为字符串
     *
     * @return
     */
    @Override
    public String toString() {
        return getJsonValue();
    }

    /**
     * 转换为json格式 方便前端渲染格式
     *
     * @return
     */
    @JsonValue
    private String getJsonValue() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("typeCode", this.getTypeCode());
        jsonObject.put("typeDesc", this.getTypeDesc());
        return jsonObject.toJSONString();
    }
}
